home *** CD-ROM | disk | FTP | other *** search
- {
- I have seen a lot of applications that use highintensity background
- colors in Text mode. How do they do it??????
- }
-
- Program HighInt; { 91-5-30 Robert Mashlan
- Public Domain
-
- The following Program is an example of how to set the CrtC controller
- in in order that high intensity backgrounds may be displayed instead
- of blinking Characters, or use the the EGA/VGA BIOS to do the same
- thing.
- }
-
- Uses
- Dos, Crt;
-
- Const
- HighIntesity = Blink; (* high intesity attribute mask *)
-
-
- Procedure HighIntensity( state : Boolean );
- (* enables or disables high intensity background colors *)
-
- Const
- BlinkBit = $20; (* For mode select port, bit 5 *)
- ModeSelofs = 4; (* offset from CrtC port base *)
-
- Var
- R : Registers;
- (* BIOS data area Variables *)
- CrtMode : Byte Absolute $0040:$0065; (* current CrtC mode *)
- CrtPortBase : Word Absolute $0040:$0063; (* CrtC port base addr *)
-
- Function EgaBios : Boolean;
- { test For the existance of EGA/VGA BIOS }
- Var R : Registers;
- begin
- With R do begin
- AH := $12;
- BX := $ff10;
- Intr($10,R);
- EgaBios := BX <> $ff10;
- end;
- end;
-
- begin
- if EgaBios then With R do begin (* use EGA/VGA BIOS Function *)
- R.AX := $1003;
- if state then BL := 0
- else BL := 1;
- Intr($10,R);
- end else begin (* Program CGA/MDA/Herc CrtC controller *)
- if state then CrtMode := CrtMode and not BlinkBit
- else CrtMode := CrtMode or BlinkBit;
- Port[ CrtPortBase + ModeSelofs ] := CrtMode;
- end;
- end;
-
-
- begin
- HighIntensity(True);
- if LastMode = 7 then
- TextAttr := $80 + $7E
- else
- Textattr := $80 + $6D;
- ClrScr;
- TextBackGround(green);
- GotoXY(20,11);
- Writeln('What do you think of this background?');
- GotoXY(1,25);
- Repeat Until ReadKey <> #0;
- HighIntensity(False);
- ClrScr;
- end.